name: Verify Staged Artifacts

on:
  workflow_dispatch:
    inputs:
      releaseVersion:
        description: 'Release version like 5.0.0-M1, 5.1.0-RC1, 5.2.0 etc.'
        required: true
        type: string

env:
  GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
  GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
  GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
  ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
  ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}

jobs:
  verify-staged-with-spring-integration:
    runs-on: ubuntu-latest
    steps:

      - name: Checkout Spring Integration Repo
        uses: actions/checkout@v4
        with:
          repository: spring-projects/spring-integration
          show-progress: false

      - name: Set up Gradle
        uses: spring-io/spring-gradle-build-action@v2

      - name: Prepare Spring Integration project against Staging
        run: |
          printf "allprojects {
                  repositories {
                    maven { 
                      url 'https://repo.spring.io/libs-staging-local'
                      credentials {
                        username = '$ARTIFACTORY_USERNAME'
                        password = '$ARTIFACTORY_PASSWORD'
                      }
                    }
                  }
                }" > staging-repo-init.gradle
          
          sed -i "1,/springKafkaVersion.*/s/springKafkaVersion.*/springKafkaVersion='${{ inputs.releaseVersion }}'/" build.gradle  

      - name: Verify Spring Integration Kafka module against staged release
        run: gradle :spring-integration-kafka:check --init-script staging-repo-init.gradle

      - name: Capture Test Results
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: test-results
          path: '**/target/surefire-reports/**/*.*'
          retention-days: 1